﻿'Autor: Cristian Martin Diaz
'Fecha: 20/10/2013

'Creación de un TextBoxValidador que hereda de System.Windows.Forms.TextBox (ver código del Designer) y que implementa
'una propiedad que permite validar el contenido del TextBox según varias categorias
Imports System.ComponentModel

Public Class TextBoxValidador

    'Información obtenida y adaptada desde MSDN: http://msdn.microsoft.com/es-es/library/w2a8y03d.aspx
    'y recurriendo a un ejemplo de http://www.vbdotnetforums.com/component-development/4372-enumerated-property-custom-user-control.html

    'Creamos una variable de tipo Enum que contendrá la lista de valores a elegir en la nueva Propiedad agregada sobre el TextBoxValidador.
    Dim enumeracion As TiposValidacion

    'Declaramos la Propiedad a mostrar y agregamos en su declaración una asignación a una Categoria para
    'que se muestre dicha propiedad en el panel de propiedades del control personalizado TextBoxValidator, 
    <Category("Data")> Public Property ValidarPara() As TiposValidacion

        'Configuramos el método Get para obtener el valor de la Propiedad.
        Get
            Return Me.enumeracion 'listita '.GetValue(indice)
        End Get
        'Configuramos el método Set para asignar el valor a la Propiedad.
        Set(ByVal valor As TiposValidacion)
            enumeracion = valor
        End Set
    End Property

    Enum TiposValidacion
        Decimales
        Edad
        Fecha
        SoloLetras
        SoloNumeros
        SoloCaracteresCastellano
    End Enum

End Class


'Imports System.ComponentModel

'Public Class TestBox
'    Inherits TextBox

'    Public Enum TestValues
'        Hello
'        Goodbye
'        World
'    End Enum

'    Private m_TestValue As TestValues

'    Public Property TestValue() As TestValues
'        Get
'            Return Me.m_TestValue
'        End Get
'        Set(ByVal Value As TestValues)
'            Me.m_TestValue = Value
'        End Set
'    End Property

'End Class



'and when I put the control in the Toolbox and added an instance to a form the TestValue property was 
'automatically displayed in the "Misc" section at the bottom of the Properties window. When I added a Category attribute like this:
'<Category("Data")> Public Property TestValue() As TestValues
